/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uva.dbcs.practica1.modelo;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;



/**
 *
 * @author diego
 */
public class VehiculoDAO {
	
	
	
	public VehiculoDTO getVehiculoDTO(int id,Connection connection) throws SQLException{

        VehiculoDTO veDto = null;

        String query = "select * from vehiculo where id_Vehiculo = "+id;
        Statement statement = connection.createStatement();
        ResultSet result = statement.executeQuery(query);
        
        if (result.next()) {
        	
        	veDto = resulsetToVehiculoDTO(result);
        	
        }

        return veDto;
	}
	
	/**
	 * 
	 * @param first el primero es el 0
	 * @param count el numero de elmentos que se buscaran
	 * @return
	 * @throws SQLException 
	 */
	public List<VehiculoDTO> getVehiculoConPaginacion(int first, int count,
			Connection connection) throws SQLException{
	
	
										// pensar que es mejor como almanacimiento
		List<VehiculoDTO> vehiculoDTOs = new ArrayList<VehiculoDTO>();
		
        String query = "select * from vehiculo limit "+first+", "+count;
        Statement statement = connection.createStatement();
        ResultSet result = statement.executeQuery(query);
        
        while (result.next()){
        	
        	vehiculoDTOs.add(resulsetToVehiculoDTO(result));
        	
		}
        
        return vehiculoDTOs;
		
		
	}

	/**
	 * Se debería usar para poder utilizar elementos de paginacion de manera
	 * adecuada.
	 * @param connection
	 * @return
	 * @throws SQLException
	 */
	public int getVehiculoCount(Connection connection) throws SQLException{
	

        String query = "select count(*) from vehiculo ";
        Statement statement = connection.createStatement();
        ResultSet result = statement.executeQuery(query);
        
        if (result.next()) {
        	
        	// Ojo !! las columnas empiezan por 1, NO por 0;
        	return result.getInt(1);
        	
        }

        return 0;
	}
	
	
	/**
	 * Esta funcion privada no hace el next!, ni ningun tipo
	 * de comprobacion, se deberá hacer antes de llamar a este
	 * metodo.
	 * @param resultSet
	 * @return
	 * @throws SQLException 
	 */
	private VehiculoDTO resulsetToVehiculoDTO(ResultSet result) throws SQLException{
		
		VehiculoDTO veDto = new VehiculoDTO();
    	
    	veDto.setId(result.getInt("id_Vehiculo"));
    	veDto.setMatricula(result.getString("matricula"));
    	veDto.setEstado(result.getString("estado"));
    	veDto.setModelo(result.getString("modelo"));
    	veDto.setTipo(result.getString("tipo"));
    	veDto.setPlazas(result.getInt("plazas"));
    	veDto.setMarca(result.getString("marca"));
     	veDto.setColor(result.getString("color"));
     	veDto.setPlazas(result.getInt("plazas"));
     	veDto.setCarnet_necesario(result.getInt("carnet_necesario"));
		
		return veDto;
		
	}
	
}
